home *** CD-ROM | disk | FTP | other *** search
File List | 1995-06-28 | 7.8 KB | 287 lines |
- ' ****************************************************************
- ' * PROGRAMME PERMETTANT DE VISUALISER DES FICHIERS D'ANIMATIONS *
- ' * DU TYPE FLI EN 320X200X256 COULEURS. *
- ' * JE NE TIENS COMPRTE ICI QUE DES FLI's LES PLUS REPANDUS CAD *
- ' * CE DONT LA SIGNATURE EST AF11. *
- ' * ET AUSSI DES CHUNKS (MAINTENANT VOUS DEVEZ SAVOIR CE QUE CELA*
- ' * SIGNIFIE !!) LES PLUS CONNUS C'EST-A-DIRE : *
- ' * FLI_COLOR | FLI_BRUN | FLI_COPY | FLI_BLACK *
- ' * CE CODE N'A POUR PRETENTION DE BATTRE DES RECORDS DE VITESSE *
- ' * MAIS PLUTOT DE MONTRER LA SYNOPTIQUE GENERAL D'UN VISUALISEUR*
- ' * DE FLI. ET PEUT-ETRE DE METTRE LE PIED A L'ETRIER A DE *
- ' * NOUVEAU CODERS. WHY NOT ?. GOOD LUCK !!! *
- ' * J'ESPERE QUE LE CODE EST COMPREHENSIBLE ET BIEN COMMENTER *
- ' * C'EST RAREMENT MON HABITUDE MAIS ICI J'AI FAIT UN EFFFFOOORT *
- ' * *
- ' * CODE BY -HIGHT SPIRIT- FOR FALK' MAG *
- ' * (C)ODERIGHT -CHRONOS- JANVIER 1995 *
- ' * E N J O Y I T ! ! ! *
- ' * HI TO : TBTB - TAN NOZ - KIUKO - SOYUZ - C.I.A - FAUCONTACT -*
- ' * RSC/STUPEFIANT - STMAG - EKO - ABSTRACT - ET TOUS LES AUTRES *
- ' * QUI FONT QU'ATARI SOIT AU MEILLEUR DE SA FORME. MERCI ATARI *
- ' * POUR CE QUE TU NOUS FAIS VIVRE... THE PASSION. *
- ' ****************************************************************
- '
- ' ≥ Cela suffit pour le GFA-BASIC ≤
- RESERVE 10000
- ' ≥ VAR. CHEMIN ACCES AU FLI THANXS DE LA COMPLETEE ≤
- chemin$="c:\tempo\*.fli"
- chemin$="f:\projets\playfli\fli\*.fli"
- ' ≥ Securite au cas ou l'on breakerait ou surgierait du fin fond des ≤
- ' ≥ tenebres une abominable erreurs car la rezo bonjour en GFABASIC ≤
- ON BREAK GOSUB fin
- ON ERROR GOSUB fin
- ' ≥ Detection de l'ecran, du mode pour etre compatible avec les ≤
- ' ≥ ecran RGB et VGA, car cela deplait enormement qu'un programme ≤
- ' ≥ tourne sur RGB ou VGA et pas RGB ET VGA et c'est comprehensible ≤
- '
- ' ≥ PREND ANCIEN MODE ≤
- ' ╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣
- old_mode%=XBIOS(88,-1)
- '
- ' ≥ PREND TYPE ECRAN ≤
- ' ╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣
- type_ecran%=XBIOS(89)
- IF type_ecran%=2
- new_mode%=51 ! 59 -> 80 colonnes
- ELSE
- new_mode%=35 ! 43 -> 80 colonnes
- ENDIF
- '
- ' ≥ PLACE NOTRE NOUVEAU MODE AVEC ASSEZ DE PLACE POUR RAM ECRAN ≤
- ' ╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣
- old_phy%=XBIOS(2)
- old_log%=XBIOS(3)
- '
- ram_ecran%=XBIOS(91,new_mode%)
- adr%=MALLOC(ram_ecran%)
- IF adr%<=0 THEN
- PRINT "Erreur allocation memoire ecran."
- END
- ENDIF
- VOID XBIOS(5,L:adr%,L:adr%,W:3,W:new_mode%)
- '
- ' ≥ Reservation MEV pour notre FLI ≤
- ' ≥ avec 1Mo il y en a assez non ! ≤
- ' ≥ sinon on augmente............! ≤
- tmp%=MALLOC(1000000)
- IF tmp%<=0
- PRINT "Erreur : allocation mev tampon fli"
- fin
- ENDIF
- '
- FILESELECT chemin$,"",n$
- CLS
- IF NOT EXIST(n$)
- PRINT "Erreur : fichier inexistant !!!"
- fin
- ELSE
- ' ≥ Charge le FLI en MEV ≤
- adr%=tmp%
- BLOAD n$,adr%
- ' ≥ Foutu format INTEL pouach !!! ≤
- ' ≥ Donc ci on prend les infos du HEADER FILE ≤
- sizefich%=FN convert(4,adr%)
- idenfli%=VAL("&"+HEX$(FN convert(2,adr%+4),4))
- IF idenfli%<>&HAF11
- PRINT "Ce fichier n'est pas un FLI"
- fin
- ENDIF
- nbrepict%=FN convert(2,adr%+6)
- largpict%=FN convert(2,adr%+8)
- highpict%=FN convert(2,adr%+10)
- bitbypix%=FN convert(2,adr%+12)
- speedfli%=FN convert(2,adr%+14)
- adr%=adr%+128
- ' ≥ Boucle globale du nombre d'image(s) du FLI ≤
- FOR t=1 TO nbrepict%
- ' ≥ Prend infos HEADER FRAME (ON SUIT TOUJOURS ?!!) ≤
- sizeframe%=FN convert(4,adr%)
- idenframe%=FN convert(2,adr%+4)
- nbrechunk%=FN convert(2,adr%+6)
- adr%=adr%+16
- ' ≥ Boucle globale du nombre de chunk(s) / frame ≤
- FOR u=1 TO nbrechunk%
- ' ≥ Prend infos HEADER CHUNK (TOUJOURS LA !!!) ≤
- sizechunk%=FN convert(4,adr%)
- typechunk%=FN convert(2,adr%+4)
- adr%=adr%+6
- ' ≥ Et appel procedure selon le type de CHUNK ≤
- SELECT typechunk%
- CASE 11
- analyse_palette
- CASE 12
- analyse_modifiee
- CASE 13
- CLS
- CASE 15
- analyse_compresse
- CASE 16
- ' ≥ +2 Car si vous vous souvenez je vous est dit que la longueur ≤
- ' ≥ de ce type de Chunk n'etait pas 320x200=64000+6(HEADER)=64006≤
- ' ≥ MAIS 320X200=64000+4(???ENCORE UN COUP DU PC)=64004 DONC ON ≤
- ' ≥ RAJOUTE 2 PUISQUE APRES ON ENLEVE 6 CELA FAIT 4 LOGIQUE NON! ≤
- sizechunk%=sizechunk%+2
- DEFAULT
- ' ≥ CE PASSE DE COMMENTAIRES ≤
- PRINT "Chunk inconnu !!!"
- ENDSELECT
- ' ≥ -6 car on a deja ajouter la longueur de HEADER CHUNK ≤
- adr%=adr%+sizechunk%-6
- NEXT u
- NEXT t
- ENDIF
- ' ≥ FIN DE LA VISUALISATION DU FLI ≤
- fin
- > FUNCTION convert(type,adresse%)
- ' ≥ Foutu Fonction de convertion d'un format intel en MOTOROLA ≤
- ' ≥ JE HAIS DE PLUS EN PLUS INTEL JE SUIS FIER D'ETRE MOTOROLA ≤
- ' ≥ ON CONVERTIE ICI QUE LES WORDS ET LES LONGS WORDS ≤
- ' ≥ IL NE MANQUERAIT QUE L'ON CON VERTISSE LES BYTES AVEC ≤
- ' ≥ intel IL FAUT S'ATTENDRE A TOUT............ ≤
- '
- SELECT type
- CASE 4
- b%=0
- POKE V:b&,PEEK(adresse%+3)
- POKE V:b%+1,PEEK(adresse%+2)
- POKE V:b%+2,PEEK(adresse%+1)
- POKE V:b%+3,PEEK(adresse%)
- RETURN b%
- CASE 2
- b&=0
- POKE V:b&,PEEK(adresse%+1)
- POKE V:b&+1,PEEK(adresse%)
- RETURN b&
- ENDSELECT
- ENDFUNC
- > PROCEDURE fin
- ' ≥ On libere la MEV du fichier FLI ≤
- ~MFREE(tmp%)
- ' ≥ On restitue le mode et les ecrans d'avant le deluge ≤
- VOID XBIOS(5,L:old_log%,L:old_phy%,W:3,W:old_mode%)
- ' ≥ Libere la MEV ecran ≤
- ~MFREE(adr%)
- '
- END
- RETURN
- > FUNCTION touche
- RETURN (0)
- ENDFUNC
- '
- > PROCEDURE analyse_palette
- LOCAL ad%,add%
- ad%=adr%
- npackcolor%=FN convert(2,ad%)
- ad%=ad%+2
- FOR cl=1 TO npackcolor%
- nnochange%=PEEK(ad%)
- INC ad%
- nchange%=PEEK(ad%)
- INC ad%
- IF nchange%=0
- nchange%=255
- ENDIF
- a$=STRING$(4,0)
- lm=V:a$
- FOR i=0 TO nchange%
- POKE lm,(PEEK(ad%)/64)*255
- INC ad%
- POKE lm+1,(PEEK(ad%)/64)*255
- INC ad%
- POKE lm+3,(PEEK(ad%)/64)*255
- INC ad%
- SLPOKE &HFFFF9800+(nnochange%*4)+(i*4),LPEEK(lm)
- DEFFILL i
- PBOX i,0,i,200
- NEXT i
- NEXT cl
- ~INP(2)
- RETURN
- > PROCEDURE analyse_modifiee
- LOCAL ad%
- ad%=adr%
- nochangeline%=FN convert(2,ad%)
- ad%=ad%+2
- nchangeline%=FN convert(2,ad%)
- ad%=ad%+2
- t$=""
- FOR ligne=0 TO nchangeline%-1
- px=0
- npacketlg%=PEEK(ad%)
- INC ad%
- FOR cptp=1 TO npacketlg%
- px=px+PEEK(ad%)
- INC ad%
- compteur=PEEK(ad%)
- INC ad%
- IF compteur=0
- ' Ligne inchangée
- ELSE
- IF compteur<128
- FOR aff=1 TO compteur
- valeur=PEEK(ad%)
- INC ad%
- PSET px,nochangeline%+ligne,valeur
- INC px
- NEXT aff
- ELSE
- compteur=256-compteur
- valeur=PEEK(ad%)
- INC ad%
- FOR aff=1 TO compteur
- PSET px,nochangeline%+ligne,valeur
- INC px
- NEXT aff
- ENDIF
- ENDIF
- NEXT cptp
- NEXT ligne
- RETURN
- > PROCEDURE analyse_compresse
- LOCAL ad%,adp%
- ad%=adr%
- npacketlg%=PEEK(ad%)
- n1octet%=PEEK(ad%+1)
- adp%=ad%
- ad%=ad%+2
- FOR ligne=0 TO 200-1
- px=0
- npacketlg%=PEEK(adp%)
- INC adp%
- FOR cptp=1 TO npacketlg%
- compteur=PEEK(adp%)
- INC adp%
- IF compteur<128
- valeur=PEEK(adp%)
- INC adp%
- FOR aff=1 TO compteur
- PSET px,ligne,valeur
- INC px
- NEXT aff
- ELSE
- compteur=256-compteur
- FOR aff=1 TO compteur
- valeur=PEEK(adp%)
- INC adp%
- PSET px,ligne,valeur
- INC px
- NEXT aff
- ENDIF
- NEXT cptp
- NEXT ligne
- RETURN
- > PROCEDURE analyse_complete
- LOCAL px%,py%,adp%
- '
- ' ≥ Copie adresse courante, ici debut CHUNK ≤
- adp%=adr%
- ' ≥ Affichage une image de 320x200 ≤
- FOR py%=0 TO PRED(200)
- FOR px%=0 TO PRED(320)
- PSET px%,py%,PEEK(adp%)
- INC adp%
- NEXT px%
- NEXT py%
- RETURN
-